//
//  JBWSDKInstance.h
//  HYSDK
//
//  Created by 崔志伟 on 2018/7/26.
//  Copyright © 2018年 崔志伟. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "JBWDefines.h"
#import "JBWError.h"
#import "JBWPayModel.h"

@protocol JBWSDKDelegate <NSObject>

@required
/*!
 初始化 成功回调【必接】
 @param params 返回  @{@"zoneId":xxx}
 @param error 如果成功则为nil
 */
- (void)vvSDKInited:(NSDictionary *)params error:(NSError *) error;

/*!
 登录结果回调【必接】
 
 @param userToken 登录凭证
 @param error 如果成功则为nil
 */
- (void)vvLoginWithUserToken:(NSString *)userToken error:(NSError *)error;


/*!
 登出结果回调【必接】
 
 */
- (void)vvLogout;

@optional
/*!
 支付结果回调, 【必接】
 
 @param params 参数请参考VVPay.h文件
 @param error 如果成功则为nil
 */
- (void)vvPayOrder:(NSDictionary *)params error:(NSError *)error;

@end
@interface JBWSDKInstance : NSObject

+(instancetype )sharedInstance;

@property(nonatomic,weak) id<JBWSDKDelegate> delegate;

/*!
 * @method 初始化【必接】
 * @brief 【AppDelegate application:didFinishLaunchingWithOptions:】中调用
 * @param appID         应用ID/游戏ID
 * @param appkey        应用Key
 * @param appVersion    应用版本号
 */
- (void)jbwSDKInitWithAppID:(NSString *)appID appKey:(NSString *)appkey appVersion:(NSString *)appVersion;



/*!
 * @method 登录【必接】
 * @brief 初始化成功后，调用的登录入口
 */
- (void)jbwLogin;




/*!
 * @method 同步游戏数据【必接】
 * @brief 如果需要验证，则需要在【Token验证 成功回调】之后调用，否则需要在【注册/登录 成功回调】之后调用。其中，可选参数，不填则传nil
 *
 * @param actionType 操作类型 1:进入游戏;2:等级提升;3:退出游戏; (必填)
 * @param zoneId 区服ID (必填)
 * @param zoneName 区服名称  (必填)
 * @param roleId 角色ID (必填)
 * @param roleName 角色昵称  (必填)
 * @param roleLevel 角色等级 (可选)
 * @param gameCoin 当前游戏币 (可选)
 * @param callback 结果回调函数
 */
- (void)jbwSyncDataWithActionType:(JBWActionType)actionType
                          zoneId:(NSString *)zoneId
                        zoneName:(NSString *)zoneName
                          roleId:(NSString *)roleId
                        roleName:(NSString *)roleName
                       roleLevel:(NSString *)roleLevel
                        gameCoin:(NSNumber *)gameCoin
                        callback:(JBWCallback)callback;


/*!
 * @method 订单支付【可选】
 * @brief 需要在【进入游戏 成功回调】之后调用。
 */
- (void)PayOrderWithInfo:(JBWPayModel *) info;

/*!
 * @method 注销【可选】
 * @brief 需要在【登录结果回调 -vvLoginWithUserToken:error:】之后调用
 */
- (void)jbwLogout;


/*!
 @method 拉起游戏回调, 【必接】
 @brief 在 [Appdelegate application:handleOpenURL:] 中调用
 */
- (BOOL)jbwHandleOpenURL:(NSURL *)url;

- (BOOL)jbwOpenURL:(NSURL *)url options:(NSDictionary*)options;

/*!
 * @method 支付进程间回调, 【必接】
 * @brief 在 [Appdelegate applicationWillEnterForeground:] 中调用
 */
- (void)jbwApplicationWillEnterForeground:(UIApplication *)application;

/*!
 * @method SDK统计服务相关, 【必接】
 * @brief 在 [Appdelegate applicationWillTerminate:] 中调用
 */
- (void)jbwApplicationWillTerminate:(UIApplication *)application;


/*!
 * @method SDK统计服务相关, 【必接】
 * @brief 在 [Appdelegate application:supportedInterfaceOrientationsForWindow:] 中调用
 */
- (UIInterfaceOrientationMask) jbwSupportedInterfaceOrientationsForWindow:(UIWindow *)window;
@end
